import wepy from 'wepy'

export default class GoodListMix extends wepy.mixin {
  data = {
    // 查询关键字
    query: '',
    // 分类 ID
    cid: '',
    // 页面索引，用来指定当前是第几页
    pagenum: 1,
    // 每页显示的数据条数
    pagesize: 10,
    // 商品列表数据
    goodslist: [],
    // 列表数据总条数
    total: 0,
    // 数据是否加载完成
    isOver: false,
    // 判断当前页数据是否加载完成 
    isLoading: false
  }

  onLoad (options) {
    console.log(options)
    this.query = options.query || ''
    this.cid = options.cid || ''

    // 调动获取商品列表数据的方法
    this.getGoodsList()
  }

  // 2、声明监听上拉刷新的方法
  onReachBottom () {
    if (this.isLoading) {
      return
    }
    // 问题： 当页面加载完成之后，这时候手指向下滑动一点，在上拉，会重复加载数据，这时候，就消耗服务器的带宽，
    // 解决方式：通过 页面 * 每页显示的条数 大于或者等于 总条数，就阻止代码继续发起请求
    if (this.pagenum * this.pagesize >= this.total) {
      this.isOver = true
      return
    }
    this.pagenum++
    this.getGoodsList()
  }

  onPullDownRefresh	() {
    this.pagenum = 1
    this.goodslist = []
    this.total = 0
    this.isOver = this.isLoading = false
    this.getGoodsList(() => {
      wepy.stopPullDownRefresh()
    })
  }

  // 获取商品列表数据
  async getGoodsList (callback) {
    this.isLoading = true
    const { data: res } = await wepy.get('/goods/search', {
      query: this.query,
      cid: this.cid,
      pagenum: this.pagenum,
      pagesize: this.pagesize
    })

    // 判断返回的数据是否成功
    if (res.meta.status !== 200) {
      return wepy.baseToast()
    }

    this.goodslist = [...this.goodslist, ...res.message.goods]
    this.total = res.message.total
    this.isLoading = false
    this.$apply()

    callback && callback()
  }

  methods = {
    goGoodsDetail (goodsId) {
      wepy.navigateTo({
        url: '/pages/goods_detail/main?goods_id=' + goodsId
      })
    }
  }
}
